跳到主要内容

编辑器上下文(EditorContext)

在 FileFormat 视图编辑时提供的上下文。它返回的所有内容要么是不可变的,要么是私有实例;不会回写到打开文件的实时状态。

方法(Methods)

image

image(name: string) -> Image?

按名称查找图像资源,找不到时返回 nil。

blob

blob(name: string) -> Blob?

按名称查找 blob 资源,找不到时返回 nil。

artboard

artboard(name: string) -> Artboard<ViewModel?>?

一个命名画板的新实例,专属于此视图。画板的默认视图模型实例会被绑定,并可通过 data 访问;若画板没有视图模型,则为 nil。

名称会在该脚本所属的文件中解析,因此库中自带的格式会访问到对应库的画板。你可以在名称前加上库的命名空间(如 markdown@0/Document)来显式指定,而要编辑宿主文件的画板请使用 hostArtboard

hostArtboard

hostArtboard(name: string) -> Artboard<ViewModel?>?

artboard 类似,但始终解析当前正在被编辑的文件。当脚本就写在该文件中时,两者行为一致,因此本地开发的库在发布后的行为也保持一致。

theme

theme() -> EditorTheme

编辑器当前的主题。

openUrl

openUrl(url: string)

在用户的浏览器中打开一个 URL。

themeFont

themeFont() -> Font?

代码编辑器渲染使用的字体,可赋值给视图模型的字体属性以保持字体一致。

defaultFont

defaultFont() -> Font?

编辑器的默认 UI 字体,用于预览中的普通文本。可赋值给视图模型的字体属性。

codeFont

codeFont() -> Font?

编辑器内置的代码字体,用于预览中的代码区域。可赋值给视图模型的字体属性。

editorScroll

editorScroll() -> EditorScroll?

文本编辑器的滚动位置,在用户滚动期间每帧刷新;在没有关联编辑器的表面(如检查器、viewer 标签页)上为 nil。可与 scrollTo 配合使用以保持预览同步。

scrollTo

scrollTo(x: number, y: number) -> ()

将承载此视图的面板滚动到指定内容偏移,会被限制在已测量的内容范围内。仅对具有 measure 的面板视图有意义;其他情况下会被忽略。

scrollEditorTo

scrollEditorTo(line: number) -> ()

将关联的文本编辑器滚动到指定的小数行(与 editorScroll 报告的单位相同),会被限制在编辑器范围内。没有关联编辑器时会被忽略。与 editorScroll 驱动的同步配合使用时,注意避免回弹。

requestDraw

requestDraw() -> ()

请求宿主在 advance 循环之外重绘视图,例如异步解码完成时。

shader

shader(name: string) -> Shader?

按名称查找已编译的着色器,找不到时返回 nil。

canvas

canvas(desc: {width: number?, height: number?}?) -> Canvas

创建一个 CPU 画布。宽高为 0 或省略时会延迟创建后备纹理。

gpuCanvas

gpuCanvas(desc: {width: number?, height: number?}?) -> GPUCanvas

创建一个用于渲染通道绘制的 GPU 画布。宽高为 0 或省略时会延迟创建后备纹理。

features

features() -> GPUFeatures

当前活动 GPU 设备的能力。

decodeImage

decodeImage(data: buffer) -> Promise<DecodedImage>

将编码后的图像(png、jpeg、webp)解码为可绘制图像。